//acwing

//https://www.acwing.com/problem/content/3959/

//前缀和


// #include<bits/stdc++.h>
// using namespace std;
// #define all(x) (x).begin(),(x).end()
// #define rall(x) (x).rbegin(),(x).rend()
// const int N=1e5+10;
// #define INF 0x3f3f3f3f;
// typedef long long int ll;
// #define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
// //----------------------------------------------------------------------------//
// int n,x,a[N],pre[N],suf[N];
// int main()
// {
// 	close();
// 	cin>>n;
// 	for(int i=1;i<=n;i++) cin>>a[i];
// 	for(int i=1;i<=n;i++) pre[i]=pre[i-1]+a[i];
// 	for(int i=n;i>=1;i--) suf[i]=suf[i+1]+a[i];

// 	if(n<=2) {cout<<0<<'\n';return 0;}

// 	int ans=0;
// 	for(int i=1;i<n;i++)
// 	{
// 		int l=i+1,r=n;
// 		while(l<r)
// 		{
// 			int mid=l+r>>1;
// 			if(suf[mid]<=pre[i]) r=mid;
// 			else l=mid+1; 
// 		}

// 		int l2=i+1,r2=n;
// 		while(l2<r2)
// 		{
// 			int mid=l+r+1>>1;
// 			if(suf[mid]>=pre[i]) l=mid;
// 			else r=mid-1;
// 		}

// 		if(pre[i]==suf[l])
// 		{
// 			if(l!=l2&&pre[l-1]-pre[i]==pre[i]&&pre[l2-1]-pre[i]==pre[i]) ans+=l-l2+1;
// 			else if(l==l2&&pre[l-1]-pre[i]==pre[i]) ans++;
// 		}
// 	}

// 	cout<<ans<<'\n';

// 	return 0;
// }


// #include<bits/stdc++.h>
// using namespace std;
// #define all(x) (x).begin(),(x).end()
// #define rall(x) (x).rbegin(),(x).rend()
// const int N=1e5+10;
// #define INF 0x3f3f3f3f;
// typedef long long int ll;
// #define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
// //----------------------------------------------------------------------------//
// int n,x,a[N],pre[N],suf[N];
// int main()
// {
// 	close();
// 	cin>>n;
// 	unordered_map<int,vector<int>> cnt;
// 	for(int i=1;i<=n;i++) cin>>a[i];
// 	for(int i=1;i<=n;i++) pre[i]=pre[i-1]+a[i];
// 	for(int i=n;i>=1;i--)
// 	{
// 		suf[i]=suf[i+1]+a[i];
// 		cnt[suf[i]].push_back(i);
// 	}

// 	if(n<=2) {cout<<0<<'\n';return 0;}

// 	int ans=0;
// 	for(int i=1;i<n-1;i++)
// 	{
// 		for(auto&k:cnt[pre[i]])
// 		{
// 			if(k!=i&&k>i&&k-1!=i&&pre[k-1]-pre[i]==pre[i]) ans++;
// 		}
// 	}

// 	cout<<ans<<'\n';

// 	return 0;
// }




#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int N = 1e5 + 10;
#define INF 0x3f3f3f3f;
typedef long long int ll;
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//----------------------------------------------------------------------------//
int n, x, a[N], pre[N], suf[N];
int main()
{
	close();
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i];
	for (int i = 1; i <= n; i++) pre[i] = pre[i - 1] + a[i];
	for (int i = n; i >= 1; i--) suf[i] = suf[i + 1] + a[i];

	if (n <= 2) { cout << 0 << '\n'; return 0; }

	int ans = 0;
	for (int i = 1; i < n; i++)
	{
		int l = i + 1, r = n;
		while (l < r)
		{
			int mid = l + r >> 1;
			if (suf[mid] <= pre[i]) r = mid;
			else l = mid + 1;
		}

		int l2 = i + 1, r2 = n;
		while (l2 < r2)
		{
			int mid = l2 + r2 + 1 >> 1;
			if (suf[mid] >= pre[i]) l2 = mid;
			else r2 = mid - 1;
		}

		if (pre[i] == suf[l])
		{
			if (l != l2 && pre[l - 1] - pre[i] == pre[i] && pre[l2 - 1] - pre[i] == pre[i]) ans += l - l2 + 1;
			else if (l == l2 && pre[l - 1] - pre[i] == pre[i]) ans++;
		}
	}

	cout << ans << '\n';

	return 0;
}